En komplett guide til CSS @font-face for egendefinerte skrifttyper, med optimaliseringsteknikker for bedre nettsideytelse og global brukeropplevelse.
CSS Font Face: Egendefinerte skrifttyper og optimaliseringsstrategier for globalt webdesign
Typografi spiller en kritisk rolle i webdesign, da det former brukeropplevelsen og formidler merkevarens identitet. @font-face-regelen i CSS gir utviklere muligheten til Ä bygge inn egendefinerte skrifttyper direkte pÄ nettsidene sine, noe som gir stÞrre kontroll over den visuelle presentasjonen av tekst og muliggjÞr en mer unik og engasjerende brukeropplevelse. Men feil implementering kan fÞre til ytelsesproblemer, som pÄvirker innlastingstiden til nettstedet og har en negativ effekt pÄ brukertilfredsheten, spesielt for brukere i regioner med tregere internettforbindelser.
Denne omfattende guiden utforsker detaljene i @font-face, og dekker beste praksis for lasting av egendefinerte skrifttyper og optimaliseringsstrategier for Ă„ sikre en sĂžmlĂžs og effektiv opplevelse for et globalt publikum. Vi vil dykke ned i ulike fontformater, optimaliseringsteknikker og avanserte funksjoner for Ă„ hjelpe deg med Ă„ mestre kunsten webtypografi.
ForstÄ @font-face-regelen
@font-face-regelen er en kraftig CSS at-regel som lar deg spesifisere egendefinerte skrifttypefiler som skal lastes ned og brukes pÄ nettstedet ditt. Den bygger i hovedsak bro mellom det begrensede settet med systemfonter og den enorme verdenen av egendefinert typografi.
Her er den grunnleggende syntaksen:
@font-face {
font-family: 'MyCustomFont';
src: url('mycustomfont.woff2') format('woff2'),
url('mycustomfont.woff') format('woff');
font-weight: normal;
font-style: normal;
}
La oss bryte ned komponentene:
font-family: Denne egenskapen definerer navnet du vil bruke for Ä referere til den egendefinerte skrifttypen i CSS-reglene dine. Velg et beskrivende og unikt navn.src: Denne egenskapen spesifiserer plasseringen til skrifttypefilene. Du kan oppgi flere kilder, slik at nettleseren kan velge det optimale formatet basert pÄ sine evner.format()-funksjonen angir fontformatet for hver fil.font-weight: Denne egenskapen definerer vekten (tykkelsen) til skrifttypen. Vanlige verdier inkluderernormal,bold,lighter,bolder, og numeriske verdier som100,400,700, osv.font-style: Denne egenskapen definerer stilen til skrifttypen (f.eks.normal,italic,oblique).
NÄr den er definert, kan du bruke den egendefinerte skrifttypen i CSS-reglene dine slik:
body {
font-family: 'MyCustomFont', sans-serif;
}
Dette vil bruke 'MyCustomFont' pÄ hele body-elementet pÄ nettstedet ditt. sans-serif er en reservefont som vil bli brukt hvis den egendefinerte fonten ikke klarer Ä laste.
Velge de riktige fontformatene: Et globalt perspektiv
Ulike nettlesere stĂžtter forskjellige fontformater. For Ă„ sikre bred kompatibilitet er det avgjĂžrende Ă„ tilby skrifttypene dine i flere formater. Her er en oversikt over vanlige fontformater og deres nettleserstĂžtte:
- WOFF2 (Web Open Font Format 2): Det mest moderne og anbefalte formatet, som tilbyr overlegen komprimering og ytelse. StĂžttes av alle moderne nettlesere.
- WOFF (Web Open Font Format): Et bredt stĂžttet format som tilbyr god komprimering. Fortsatt relevant for eldre nettlesere.
- EOT (Embedded Open Type): Spesielt designet for Internet Explorer. Generelt ikke nÞdvendig lenger, med mindre du absolutt mÄ stÞtte veldig gamle versjoner av IE.
- TTF (TrueType Font) / OTF (OpenType Font): Eldre formater som generelt er stÞrre i stÞrrelse og mindre optimalisert for webbruk. UnngÄ Ä bruke disse direkte nÄr det er mulig.
- SVG Fonts: Et eldre format, som ikke brukes ofte i dag pÄ grunn av nettleserstÞtte og andre begrensninger.
Anbefaling: Bruk WOFF2 som ditt primĂŠre format, og tilby WOFF som en reserve for eldre nettlesere. Vurder EOT kun hvis du trenger Ă„ stĂžtte veldig gamle versjoner av Internet Explorer.
Her er et eksempel pÄ hvordan du kan tilby flere fontformater i @font-face-regelen din:
@font-face {
font-family: 'MyCustomFont';
src: url('mycustomfont.woff2') format('woff2'),
url('mycustomfont.woff') format('woff'),
url('mycustomfont.eot') format('embedded-opentype'); /* For eldre IE */
font-weight: normal;
font-style: normal;
}
Lastestrategier for fonter: Optimalisering for hastighet og brukeropplevelse
MÄten du laster inn skrifttypene dine pÄ kan ha betydelig innvirkning pÄ nettstedets ytelse. Her er flere lastestrategier du kan benytte:
1. Grunnleggende font-lasting (standard atferd)
Som standard vil nettlesere vanligvis blokkere gjengivelsen av tekst til skrifttypen er lastet ned. Dette kan fĂžre til en oppfattet ytelsesflaskehals, der brukere ser en blank skjerm eller usynlig tekst i en kort periode (ofte kalt en "flash of invisible text" eller FOIT).
Selv om den er enkel Ă„ implementere, er denne tilnĂŠrmingen generelt ikke anbefalt for en optimal brukeropplevelse.
2. Bruk av font-display-egenskapen
font-display-egenskapen gir mer kontroll over hvordan fonter lastes og vises. Den lar deg tilpasse atferden under font-lastingsprosessen, og gir en jevnere opplevelse for brukerne dine. Dette er den anbefalte tilnĂŠrmingen for de fleste situasjoner.
Her er de mulige verdiene for font-display:
auto: Nettleseren bruker sin standardstrategi for font-lasting (vanligvis FOIT).block: Gir fonten en kort blokkeringsperiode og en uendelig bytteperiode. Nettleseren skjuler teksten i utgangspunktet, og viser den deretter nÄr fonten er lastet. Hvis fonten ikke er lastet innen en kort periode (vanligvis 3 sekunder), vises reservefonten.swap: Gir fonten en null blokkeringsperiode og en uendelig bytteperiode. Nettleseren viser teksten umiddelbart ved hjelp av en reservefont. NÄr den egendefinerte fonten er lastet, byttes teksten til den egendefinerte fonten. Dette unngÄr FOIT, men kan resultere i en "flash of unstyled text" (FOUT).fallback: Gir fonten en veldig kort blokkeringsperiode og en kort bytteperiode. Dette er et kompromiss mellomblockogswap. Nettleseren skjuler teksten i en veldig kort periode, og bytter deretter til reservefonten hvis den egendefinerte fonten ikke er lastet. Den fortsetter Ä bytte fonter i en kort periode, hvoretter den stopper og bare bruker reservefonten.optional: Gir fonten en ekstremt kort blokkeringsperiode og ingen bytteperiode. Nyttig for fonter som ikke er kritiske for den fÞrste gjengivelsen av siden (f.eks. fonter brukt i ikke-essensielle UI-elementer).
Anbefalinger:
- For de fleste scenarioer gir
swapden beste balansen mellom oppfattet ytelse og visuell stabilitet. Brukere ser tekst umiddelbart, selv om den i utgangspunktet er stylet med en reservefont. - Bruk
fallbackhvis du vil minimere FOUT, men fortsatt prioritere den egendefinerte fonten. - Bruk
optionalfor ikke-kritiske fonter for Ă„ forhindre unĂždvendig blokkering av sidens gjengivelse.
Eksempel pÄ bruk av font-display: swap:
@font-face {
font-family: 'MyCustomFont';
src: url('mycustomfont.woff2') format('woff2'),
url('mycustomfont.woff') format('woff');
font-weight: normal;
font-style: normal;
font-display: swap;
}
3. ForhÄndslasting av fonter
ForhÄndslasting av fonter kan forbedre ytelsen ved Ä instruere nettleseren til Ä laste ned skrifttypefilene sÄ tidlig som mulig. Dette kan redusere forsinkelsen forbundet med font-lasting, noe som resulterer i en raskere oppfattet innlastingstid.
Bruk <link rel="preload">-taggen i <head>-delen av HTML-dokumentet ditt for Ä forhÄndslaste fonter:
<link rel="preload" href="mycustomfont.woff2" as="font" type="font/woff2" crossorigin>
Forklaring:
rel="preload": Spesifiserer at ressursen skal forhÄndslastes.href: Spesifiserer URL-en til skrifttypefilen.as="font": Spesifiserer typen ressurs som forhÄndslastes (i dette tilfellet, en font).type="font/woff2": Spesifiserer MIME-typen til skrifttypefilen.crossorigin: NÞdvendig hvis fonten lastes fra en annen opprinnelse (f.eks. en CDN).
Forsiktig: ForhÄndslasting av for mange ressurser kan pÄvirke ytelsen negativt. ForhÄndslast kun fonter som er kritiske for den fÞrste gjengivelsen av siden.
4. Font Loading API (avansert)
Font Loading API gir et mer granulÊrt kontrollnivÄ over font-lasting. Det lar deg oppdage nÄr en font er lastet, spore lasteprogresjon og hÄndtere feil. Dette kan vÊre nyttig for Ä implementere mer sofistikerte lastestrategier for fonter.
Eksempel (JavaScript):
document.fonts.load('1em MyCustomFont').then(function() {
// Fonten er lastet inn
console.log('MyCustomFont lastet!');
});
Font Loading API er mer komplekst Ă„ bruke enn font-display-egenskapen, men det gir stĂžrre fleksibilitet for avanserte brukstilfeller.
Optimalisering av fontfiler: Redusere stĂžrrelse og forbedre ytelse
Optimalisering av skrifttypefilene dine er avgjĂžrende for Ă„ forbedre nettstedets ytelse og redusere innlastingstider. Her er flere teknikker du kan bruke:
1. Font-subsetting
De fleste fonter inneholder et stort antall glyfer (tegn), hvorav mange kanskje ikke brukes pÄ nettstedet ditt. Font-subsetting innebÊrer Ä fjerne ubrukte glyfer fra skrifttypefilen, noe som reduserer stÞrrelsen betydelig. Dette er spesielt viktig nÄr man stÞtter flere sprÄk, da fonter kan inneholde glyfer for tegn som ikke brukes i en bestemt region.
Fordeler:
- Mindre stÞrrelse pÄ skrifttypefilen
- Raskere nedlastingstider
- Forbedret ytelse pÄ nettstedet
VerktĂžy for font-subsetting:
- FontForge (Open Source): En kraftig skrivebordsbasert font-editor som lar deg manuelt subsette fonter.
- Glyphhanger (Command Line): Et kommandolinjeverktĂžy som identifiserer ubrukte glyfer og lager subsetter.
- Online Font Subsetting Tools: Flere online verktĂžy er tilgjengelige for Ă„ subsette fonter, som for eksempel Font Squirrel's Webfont Generator.
Unicode-range
For flersprÄklige nettsteder kan CSS-deskriptoren unicode-range brukes til Ä spesifisere hvilke Unicode-tegnomrÄder fonten skal brukes for. Dette gjÞr at nettleseren kun laster ned de nÞdvendige delene av fonten, noe som forbedrer ytelsen. Dette er spesielt nyttig nÄr man hÄndterer sprÄk med store tegnsett som kinesisk, japansk og koreansk (CJK).
Eksempel:
@font-face {
font-family: 'NotoSansCJK';
src: url('NotoSansCJK-Regular.woff2') format('woff2');
unicode-range: U+4E00-9FFF, /* Vanlige CJK-ideogrammer */
U+3040-309F, /* Hiragana */
U+30A0-30FF; /* Katakana */
font-weight: normal;
font-style: normal;
}
2. Komprimering
SÞrg for at skrifttypefilene dine er riktig komprimert med Gzip eller Brotli. De fleste webservere stÞtter disse komprimeringsalgoritmene, som kan redusere stÞrrelsen pÄ skrifttypefilene betydelig under overfÞring.
Fordeler:
- Mindre filstĂžrrelse under overfĂžring
- Raskere nedlastingstider
3. Optimalisering av SVG-fonter
Hvis du bruker SVG-fonter (selv om det generelt ikke anbefales), optimaliser SVG-filene med verktĂžy som SVGO (SVG Optimizer) for Ă„ fjerne unĂždvendig metadata og redusere filstĂžrrelsen.
4. Variable fonter
Variable fonter er en relativt ny font-teknologi som gjĂžr at en enkelt skrifttypefil kan inneholde flere varianter av en skrifttype, som for eksempel forskjellige vekter, bredder og stiler. Dette kan redusere den totale filstĂžrrelsen betydelig sammenlignet med Ă„ bruke separate skrifttypefiler for hver variasjon.
Fordeler:
- Mindre filstÞrrelser sammenlignet med tradisjonelle fontformater nÄr man bruker flere varianter
- StĂžrre designfleksibilitet
5. Mellomlagring (Caching)
Konfigurer webserveren din til Ă„ mellomlagre skrifttypefiler riktig. Dette lar nettlesere lagre skrifttypefilene lokalt, noe som reduserer behovet for Ă„ laste dem ned gjentatte ganger ved senere besĂžk.
Fordeler:
- Raskere innlastingstider for returnerende besĂžkende
- Redusert serverbelastning
Hensyn til tilgjengelighet
NÄr du bruker egendefinerte fonter, er det viktig Ä ta hensyn til tilgjengelighet for Ä sikre at nettstedet ditt er brukbart for alle, inkludert personer med nedsatt funksjonsevne.
1. Tilstrekkelig kontrast
SĂžrg for at tekstfargen gir tilstrekkelig kontrast mot bakgrunnsfargen for Ă„ oppfylle WCAG-standardene (Web Content Accessibility Guidelines). Bruk et kontrastverktĂžy for Ă„ verifisere at kontrastforholdet er tilstrekkelig.
2. Lesbar skriftstĂžrrelse
Bruk en skriftstÞrrelse som er stor nok til Ä vÊre lett lesbar, spesielt for brukere med synshemming. UnngÄ Ä bruke overdrevent smÄ skriftstÞrrelser.
3. Skriftvekt
Velg en skriftvekt som er lett lesbar. UnngÄ Ä bruke overdrevent tynne eller lette fonter, da de kan vÊre vanskelige Ä lese for noen brukere.
4. Reservefonter (Fallback)
Oppgi passende reservefonter i CSS-reglene dine for Ä sikre at teksten fortsatt er lesbar selv om den egendefinerte fonten ikke klarer Ä laste. Velg reservefonter som ligner i stil og utseende pÄ den egendefinerte fonten.
5. Endring av tekststĂžrrelse
SÞrg for at brukere enkelt kan endre stÞrrelsen pÄ teksten pÄ nettstedet ditt ved hjelp av nettleserzoom eller andre tilgjengelighetsverktÞy. UnngÄ Ä bruke faste stÞrrelsesenheter (f.eks. piksler) for skriftstÞrrelser. Bruk relative enheter (f.eks. em, rem) i stedet.
6. SprÄkattributter
Sett lang-attributtet korrekt pÄ <html>-taggen for Ä indikere sprÄket pÄ siden. Dette hjelper skjermlesere og andre hjelpeteknologier med Ä gjengi teksten riktig.
Eksempel:
<html lang="no">
<head>
<title>Min nettside</title>
</head>
<body>
<p>Dette er litt tekst pÄ norsk.</p>
</body>
</html>
Nettleserkompatibilitet
SÞrg for at de egendefinerte skrifttypene dine er kompatible med et bredt spekter av nettlesere. Test nettstedet ditt pÄ forskjellige nettlesere og enheter for Ä identifisere eventuelle kompatibilitetsproblemer. Bruk verktÞy som BrowserStack eller Sauce Labs for Ä teste nettstedet ditt pÄ en rekke nettlesere og operativsystemer.
Vurder Ä bruke et CSS reset-stilark (f.eks. Normalize.css) for Ä normalisere standardstilene pÄ tvers av forskjellige nettlesere.
Vanlige fallgruver Ä unngÄ
- Bruke for mange egendefinerte fonter: Bruk av for mange egendefinerte fonter kan pÄvirke ytelsen negativt og skape en rotete visuell opplevelse. Begrens antall egendefinerte fonter som brukes pÄ nettstedet ditt til maksimalt to eller tre.
- Bruke store skrifttypefiler: Store skrifttypefiler kan Ăžke innlastingstiden betydelig. Optimaliser skrifttypefilene dine ved hjelp av teknikkene beskrevet ovenfor.
- Unnlate Ă„ oppgi reservefonter: Ă ikke oppgi reservefonter kan resultere i usynlig tekst hvis den egendefinerte fonten ikke klarer Ă„ laste.
- Ignorere hensyn til tilgjengelighet: Ă ignorere hensyn til tilgjengelighet kan gjĂžre nettstedet ditt ubrukelig for personer med nedsatt funksjonsevne.
- Ikke teste pÄ forskjellige nettlesere: à ikke teste pÄ forskjellige nettlesere kan fÞre til kompatibilitetsproblemer.
- Hotlinking av skrifttypefiler direkte fra designerens nettsted eller andre upÄlitelige kilder: Host kun fonter fra ditt eget nettsted, CDN eller en anerkjent font-tjeneste.
Beste praksis for global webtypografi
NÄr du designer nettsteder for et globalt publikum, er det viktig Ä vurdere fÞlgende beste praksis for webtypografi:
- Velg fonter som stÞtter flere sprÄk: Velg fonter som inkluderer glyfer for sprÄkene du har tenkt Ä stÞtte pÄ nettstedet ditt.
- Bruk passende skriftstÞrrelser for forskjellige sprÄk: SkriftstÞrrelser som er egnet for ett sprÄk, er kanskje ikke egnet for et annet. Juster skriftstÞrrelsene etter behov for Ä sikre lesbarhet pÄ tvers av forskjellige sprÄk.
- Vurder linjehÞyde og tegnmellomrom: LinjehÞyde og tegnmellomrom kan pÄvirke lesbarheten, spesielt for sprÄk med komplekse tegnsett. Juster disse verdiene etter behov for Ä optimalisere lesbarheten.
- Bruk passende tekstjustering: Den passende tekstjusteringen kan variere avhengig av sprÄket. For eksempel bruker venstre-til-hÞyre-sprÄk vanligvis venstrejustering, mens hÞyre-til-venstre-sprÄk vanligvis bruker hÞyrejustering.
- Test nettstedet ditt med forskjellige sprÄk: Test nettstedet ditt med forskjellige sprÄk for Ä sikre at typografien ser korrekt ut og er lett lesbar.
Eksempel: Bruke en font med global tegnstĂžtte
Vurder Ä bruke en font som Noto Sans, som er designet for Ä stÞtte et bredt spekter av sprÄk og skriftsystemer. Google tilbyr Noto Sans og dens mange varianter (Noto Sans CJK, Noto Sans Arabic, etc.) som en gratis webfont.
Konklusjon
Ă
mestre CSS @font-face og implementere effektive strategier for font-lasting og optimalisering er avgjÞrende for Ä skape effektive og visuelt tiltalende nettsteder for et globalt publikum. Ved Ä forstÄ nyansene i fontformater, lasteteknikker og optimaliseringsmetoder kan du levere en sÞmlÞs og engasjerende brukeropplevelse som overskrider geografiske grenser og kulturelle forskjeller.
Ved Ă„ fĂžlge beste praksis som er skissert i denne guiden, kan du sikre at nettstedets typografi forbedrer den generelle designen, forbedrer ytelsen og gir en tilgjengelig opplevelse for alle brukere, uavhengig av deres plassering eller enhet.